//
//  NetwordHandler.m
//  UI16_加载网路图片
//
//  Created by dlios on 15-5-1.
//  Copyright (c) 2015年 lanou3g.com 孙家庆. All rights reserved.
//

#import "NetwordHandler.h"

@implementation NetwordHandler
+ (void)requestWithURL:(NSString *)urlStr completion:(void (^)(id result))block
{
    // 封装
    // 把重复代码写一次 之后反复调用
    
    //  封装原因
    //  1.简化代码(偷懒)
    //  2.提高代码的扩展性/可重用性
    
    //  封装的标志
    //  可以重复复制粘贴 有重复的代码反复出现
    
    //  封装的方式
    //  1.方法封装
    //  在一个类中反复出现 只适用 于当前 把重复代码写在一个方法中 反复使用
    
    //  2.类封装
    //  在多个类中反复使用或者多个工程中都可以使用 把反复代码写在一个类中
    
    //  3.类目
    //  给一个已有的类扩展功能
    
    //  封装的要求
    //  1.内存管理
    //  2.预先规划好返回值(期望的返回结果)和参数(期望的传递参数) 设计好那些值是可以变化的 那些值是可以不变的
    //  3.安全性 保证封装本身不存在问题
    //  4.扩展性  封装不是一次性的事
    
    
    //  block异步GET网络请求封装
    //  1.获取的网址 urlStr
    //  汉子转码
    NSString *str = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    //  2.string-> url
    NSURL *url = [NSURL URLWithString:str];
    //  URL -> request
    //  参数1: URL网址
    //  参数2: 缓存机制
    //  参数3: 响应时间限制
    NSMutableURLRequest *repuest = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
    //  4.建立连接
    [NSURLConnection sendAsynchronousRequest:repuest queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
        //  5.JSON解析
        if (data != nil) {
            id result = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
            //  6.使用block回调  传递数据
            block(result);
        }
    }];
    
    
}
@end
